#ifndef _MOVE_INFO_
#define _MOVE_INFO_

#include "Common.h"

// forward declaration, these classes have a circular
// dependency
class Entity;

class MoveInfo
{
public:
	MoveInfo();
	virtual ~MoveInfo();

	virtual void SetDestination(const Position &pos);
	virtual void SetDestination(int x, int y);
	virtual void SetEntity(Entity *ent);
	virtual void SetMoveDirection(MoveDirection dir);
	virtual void SetCost(int cost);
	virtual void SetIsValid(bool valid);
	virtual void SetDesitinationRowCol(const Position &pos);
	virtual void SetDesitinationRowCol(int x, int y);

	virtual Position GetDesitination() const;
	virtual Entity* GetEntity() const;
	virtual MoveDirection GetDirection() const;
	virtual int GetCost() const;
	virtual bool IsValid() const;
	virtual Position GetDestinationRowCol() const;

private:
	Entity *m_ent;  //not owned here
	Position m_pos;
	Position m_destRowCol; // helpful for GameBoard
	MoveDirection m_direction;
	int m_cost;
	bool m_isValid;
};

#endif